<?php
require_once __DIR__ . '/../Connect.php';

/**
 * 获取POST请求的JSON数据
 * 
 * @return array 转换后的PHP数组，如果未收到JSON数据，则返回空数组。
 */
function get_post_json(): array
{
    $raw = @file_get_contents('php://input');
    $arr = [];
    if (!empty($raw)) {
        $arr = json_decode($raw, true);
    }
    return $arr;
}

/**
 * 返回错误信息
 *
 * @param string $info 错误信息
 * @return string 返回错误信息
 */
function err(string $info): string
{
    return json_encode(['code' => -1, 'message' => $info, 'data' => []]);
}

/**
 * 返回成功JSON结构
 * 
 * @param array $data
 * @return string 返回JSON字符串
 */
function success(array $data): string
{
    return json_encode(['code' => 0, 'message' => 'success', 'data' => $data]);
}

$data = get_post_json();
// 检查传入的$data中是否包含'params'键，如果没有，则表示参数不完整。
if (!isset($data['params'])) {
    // 如果'params'键不存在，输出错误信息并终止程序执行。
    echo err('缺少参数内容params');
    exit();
}

$params = $data['params'];

try {
    $c = new Connect(
        $params['ip'] ?? '127.0.0.1',
        $params['port'] ?? 3306,
        $params['db'] ?? 'test',
        $params['user'] ?? 'test',
        $params['psw'] ?? 'test'
    );
    $result = $c->exec($params['sql'], boolval($params['is_select'] ?? true));

    echo success(['result' => $result]);
} catch (Exception $e) {
    echo err($e->getMessage());
}
